package cn.com.headfree.dictionary.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.gta.edu.sdk.base.controller.BaseController;
import com.gta.edu.sdk.common.dto.ResultData;
import com.gta.edu.sdk.util.StringUtil;

import cn.com.headfree.base.initdata.InitCacheData;
import cn.com.headfree.dictionary.entity.TCommonDictionary;

/**
 * Title:数据字典页面控制层 Description: Copyright: Copyright (c) 2017 Company:
 * www.headfree.com.cn
 * 
 * @author fengya
 * @version 1.0
 * @date 2019年7月8日 下午4:28:48
 */
@RestController
@RequestMapping(value = "/dictionary", produces = "application/json;charset=UTF-8")
public class DictionaryController extends BaseController {
    private static final Logger LOG = LogManager.getLogger(DictionaryController.class);

    /**
     * @description 根据父节点的值，或者所有子节点的记录数据
     * @author 冯亚
     * @date 2019年7月10日 上午11:02:25
     * @param parentValue
     * @return
     * @return List<TProjectDictionary>
     */
    @RequestMapping("/findDictionaryByParentValue")
    public ResultData findDictionaryByParentValue(HttpServletRequest request, String sysCode, String parentValue) {
        if (StringUtil.isNullOrEmpty(parentValue)) {
            LOG.info("根据父节点的值，或者所有子节点的记录数据失败，原因：传递的父节点的值为空！");
            return null;
        }
        ResultData result = new ResultData();
        try {
        	WebApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
            List<TCommonDictionary> list = InitCacheData.getInstance().findDictionaryByParentValue(sysCode,parentValue,app);
            result.setData(list);
        } catch (Exception e) {
            LOG.info("根据父节点的值，或者所有子节点的记录数据失败，原因：后端出现异常！", e);
            result.setSuccess(false);
            result.setErrorMsg("根据父节点的值，或者所有子节点的记录数据失败，原因：后端出现异常！");
        }
        return result;
    }
    
    /**
     * @description 根据父节点的值，或者所有子节点的记录数据
     * @author 冯亚
     * @date 2019年7月10日 上午11:02:25
     * @param request
     * @return
     * @return List<TProjectDictionary>
     */
    @RequestMapping("/initDictionaryData")
    public ResultData initDictionaryData(HttpServletRequest request) {
        ResultData result = new ResultData();
        try {
        	WebApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
        	InitCacheData.getInstance().initData(app);
        	result.setData(request.getRemoteAddr());
        } catch (Exception e) {
            LOG.info("初始化数据字典数据失败，原因：后端出现异常！", e);
            result.setSuccess(false);
            result.setErrorMsg("初始化数据字典数据失败，原因：后端出现异常！");
        }
        return result;
    }

    /**
     * @description 根据父节点值和子节点的值，或者该子节点记录
     * @author 冯亚
     * @date 2019年7月10日 上午11:02:45
     * @param parentValue
     * @param value
     * @return
     * @return TProjectDictionary
     */
    @RequestMapping("/getDictionaryByParentValueAndValue")
    public ResultData getDictionaryByParentValueAndValue(HttpServletRequest request,String sysCode, String parentValue, String value) {
        if (StringUtil.isNullOrEmpty(parentValue) || StringUtil.isNullOrEmpty(value)) {
            LOG.info("根据父节点值和子节点的值，或者该子节点记录失败，原因：传递的父节点的值和子节点的值有一个为空！");
            return null;
        }
        ResultData result = new ResultData();
        try {
        	WebApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
            TCommonDictionary dict = InitCacheData.getInstance().getDictionaryByParentValueAndValue(sysCode,parentValue, value,app);
            result.setData(dict);
        } catch (Exception e) {
            LOG.info("根据父节点值和子节点的值，或者该子节点记录失败，原因：后端出现异常！", e);
            result.setSuccess(false);
            result.setErrorMsg("根据父节点值和子节点的值，或者该子节点记录失败，原因：后端出现异常！");
        }
        return result;
    }
//    
//    
//    @RequestMapping("/testRedis")
//    public ResultData testRedis() {
//    	RedisClusterUtil.getInstance().setString("names", "fengya");
//    	RedisClusterUtil.getInstance().set("sexes", "females");
//    	System.out.println(RedisClusterUtil.getInstance().getString("names") + "---" + RedisClusterUtil.getInstance().get("sexes"));
//    	return new ResultData();
//    }
    
}
